热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MATLAB|曲线拟合基本介绍

曲线拟合工具箱cftool基本介绍Tipsmathworks官网的和help文件https:cn.mathworks.comhelpcurvefitfit-comparison-i
曲线拟合工具箱cftool基本介绍

Tips

mathworks官网的和help文件
https://cn.mathworks.com/help/curvefit/fit-comparison-in-curve-fitting-app.html
在mathworks官网找到相应的help文件,点击右上角的Translate This Page,可以查看中文翻译,虽然是自动翻译的,很不准确,但偶尔可以看看。

《MATLAB|曲线拟合基本介绍》

☆曲线拟合工具箱界面

《MATLAB|曲线拟合基本介绍》

《MATLAB|曲线拟合基本介绍》

☆☆操作方法

  • 在命令行输入数据:
    x
    y

  • 启动曲线拟合工具箱
    命令:cftool

  • 进入曲线拟合工具箱界面“Curve Fitting tool”
    1)利用X data和Y data的下拉菜单读入数据x,y
    2)选择曲线拟合类型
    3)自动拟合 即可在结果窗口和曲线窗口显示出拟合结果

  • 工具箱提供的拟合类型如下,进行简要说明,可以尝试各种不同类型拟合效果

    • Custom Equations:用户自定义的函数类型
    • Exponential:指数逼近,有2种类型, aexp(bx) 、 aexp(bx) + cexp(dx)
    • Fourier:傅立叶逼近,有7种类型,基础型是 a0 + a1cos(xw) + b1sin(xw)
    • Gaussian:高斯逼近,有8种类型,基础型是 a1*exp(-((x-b1)/c1)^2)
    • Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubic spline、shape-preserving
    • Polynomial:多形式逼近,有9种类型,linear ~、quadratic ~、cubic ~、4-9th degree ~
    • Power:幂逼近,有2种类型,ax^b 、ax^b + c
    • Rational:有理数逼近,分子、分母共有的类型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子还包括constant型
    • Smoothing Spline:平滑逼近(翻译的不大恰当,不好意思)
    • Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是 a1sin(b1x + c1)
    • Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b)
  • 选择View > Residuals Plot,可以查看残差图。

  • 在Table of Fits中右击选择Duplicate “XX” (或者在Fit主菜单里面复制) 复制某个拟合,重新生成别的拟合,进行对比。

  • 观察Results以及residuals plot 残差图。
    The residuals from a good fit should look random with no apparent pattern. A pattern, such as a tendency for consecutive residuals to have the same sign, can be an indication that a better model exists.

☆☆☆如何选取最好的拟合结果

To determine the best fit, you should examine both the graphical and numerical fit results.

第一步:查看图的拟合结果【Examine the Graphical Fit Results】
  • 残差图:越小,拟合越好。
  • 选择Tools > Axes Limits,或者直接点解Adjust Axes Limits图标,调整加大x轴坐标,显示曲线的变化趋势,若拟合曲线的趋势与预期趋势一致(上升、下降),则表明拟合效果较好。

    《MATLAB|曲线拟合基本介绍》

第二步:检查数值结果【Evaluate the Numerical Fit Results】
  • 拟合结果指标【Goodness of fit】(参见help: Evaluating Goodness of Fit)

    《MATLAB|曲线拟合基本介绍》

  • 在Table of Fits中双击某个指标可以排序。

SSE【the sum of squares due to error】:误差平方和
R-square: 复相关系数或复测定系数
Adjusted R-square:调整自由度的复相关系数
RMSE【Root mean squared error】: 均方根误差

The adjusted R-square statistic is generally the best indicator of the fit quality when you add additional coefficients to your model.

当SSE和RMSE越小,R越接近于1时标明拟合的越好。

☆☆☆☆其他操作

  • 选择Window > Left/Right Tile or Top/Bottom Tile(窗口>左/右平铺或顶部/底部平铺图),可以对比拟合结果。
  • 选择View > Fit Settings or Table of Fits可以关闭Fit Settings、Table of Fits,只显示图形,进行对比。

MATLAB help文件里有有个Note:
The fitted coefficients associated with the constant, linear, and quadratic terms are nearly identical for each normalized polynomial equation. However, as the polynomial degree increases, the coefficient bounds associated with the higher degree terms cross zero, which suggests overfitting.
对于多项式拟合,多项式阶数越高,如果拟合系数的置信区间接近0,说明可能过度拟合了。。。

《MATLAB|曲线拟合基本介绍》

MATLAB中的fit函数
  • fit函数fit()
    • fitobject = fit(x,y,fitType,fitOptions)
  • 拟合类型:拟合表达式expression
    • aFittype = fittype(expression,Name,Value)
  • fitoptiOns= fitoptions(libraryModelName,Name,Value)

optiOns=
Normalize: 'off'
Exclude: []
Weights: []
Method: 'NonlinearLeastSquares'
Robust: 'Off'
StartPoint: [1x0 double]
Lower: [0 -Inf 0 0 -Inf 0]
Upper: [1x0 double]
Algorithm: 'Trust-Region'
DiffMinChange: 1.0000e-08
DiffMaxChange: 0.1000
Display: 'Notify'
MaxFunEvals: 600
MaxIter: 400
TolFun: 1.0000e-06
TolX: 1.0000e-06

  • fitoption得出的各参数的意义:

Normalize: 对数据归一化处理
Exclude: 排除数据
Weights: 加权
Method: 拟合方法, 非线性最小二乘法
Robust: 稳健方式(通过加权方式排除异常值影响)
StartPoint: 拟合开始点
Lower: 拟合参数下界
Upper: 拟合参数上界
Algorithm: 算法 ‘置信区间’
DiffMinChange: 差分时参数最小变化值
DiffMaxChange: 差分时参数最大变化值
Display: 显示通知
MaxFunEvals: 最大函数计算次数
MaxIter: 最大迭代次数
TolFun: 函数精度
TolX: 参数精度

《MATLAB|曲线拟合基本介绍》

MATLAB线性拟合函数polyfit、polyval、polyconf
  • 参见:
  1. 多项式拟合与线性回归分析对比案例,polyfit、polyval、polyconf
  2. MATLAB 线性拟合小结 —— polyfit
  • MATLAB简单应用实例

% 原始数据
data1; %x数据
data2; %y数据
% cftool查看
cftool(data1,data2);
% 多项式拟合
[pp1,ss1]=polyfit(data1,data2,1),%%一次多项式
nh_line=polyval(pp1,data1);%拟合曲线,相当于:nh_line=pp1(1,1).*data1+pp1(1,2);
% 得到具有75%保证率的直线
[yhat,delta]=polyconf(pp1,data1,ss1,0.25); %% 0.25表示1-0.25保证率
pp75=polyfit(data1,yhat+delta,1); %%公式
% 绘图
figure;
plot(data1,data2,'ko');hold on; %原始数据
plot(data1,nh_line,'b-','LineWidth',2.5);% 拟合的一次曲线
plot(data1,yhat+delta,'r:','LineWidth',2.5);% 具有75%保证率的直线--上限
plot(data1,yhat-delta,'r:','LineWidth',2.5);% 具有75%保证率的直线--下限

《MATLAB|曲线拟合基本介绍》

推荐阅读:
  • 最小二乘法与matlab拟合工具箱cftool
  • matlab函数拟合
  • matlab关于plotfit函数,lsqcurvefit函数,cftool工具箱的使用
  • Matlab篇—-常用的回归分析Matlab命令(regress篇)

推荐阅读
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
author-avatar
_雁火漫天_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有